/*
 * @Author: wu jian
 * @Date: 2021-06-24 09:50:25
 * @LastEditTime: 2021-06-24 09:52:25
 * @LastEditors: wu jian
 */

// 给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。

// 必须在原数组上操作，不能拷贝额外的数组。
// 尽量减少操作次数。

function moveZeroes_for(nums: number[]): void {
  let n: number = 0
  for (let i = 0; i < nums.length;) {
    if (nums[i] !== 0) {
      i++
    } else {
      nums.splice(i, 1)
      n++
    }
  }
  nums.splice(nums.length, 0, ...new Array(n).fill(0))
};

function moveZeroes_sort(nums: number[]): void {
  nums.sort((a, b) => {
    if (a === 0 && b !== 0) {
      return 1
    } else if (a !== 0 && b === 0) {
      return -1
    } else {
      return 0
    }
  })
};